package com.example.Interceptor;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

@Slf4j
@Component
public class DomeIntercrptor implements HandlerInterceptor {


    @Override
    /**
 * 在请求处理之前执行，用于权限检查或日志记录。
 *
 * @param request  客户端请求信息
 * @param response 客户端响应信息
 * @param handler  请求处理器
 * @return boolean 是否继续执行后续处理
 * @throws Exception 处理异常
 */
    // preHandle方法用于在请求处理之前执行，用于权限检查或日志记录。
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    log.info("preHandle");
    return true;
}

/**
 * 在请求处理之后、视图渲染之前执行，用于修改模型或视图。
 *
 * @param request      客户端请求信息
 * @param response     客户端响应信息
 * @param handler      请求处理器
 * @param modelAndView 模型和视图信息
 * @throws Exception 处理异常
 */
@Override
// postHandle方法用于在请求处理之后、视图渲染之前执行，用于修改模型或视图。
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    log.info("postHandle");
}

/**
 * 在请求处理完成后执行，用于资源清理或日志记录。
 *
 * @param request  客户端请求信息
 * @param response 客户端响应信息
 * @param handler  请求处理器
 * @param ex       处理过程中抛出的异常
 * @throws Exception 处理异常
 */
@Override
// afterCompletion方法用于在请求处理完成后执行，用于资源清理或日志记录。
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    log.info("afterCompletion");
}

}
